package com.powergame.model;

import com.powergame.exceptions.PowerGameException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Jeu.java
 *
 * Controleur principal du jeu, se charge de gérer le modèle de données
 *
 * @author ToF
 */
public class Jeu {
    
    /** Le plateau de jeu */
    private Plateau plateau = null;
    
    /** Les joueurs */
    private List<Joueur> joueurs = null;
    
    /** le tour courant */
    private TourJeu tour = null;
    
    public Jeu(){
        this.plateau = new Plateau(this);
    }
    
    public Jeu(Plateau plateau){
        this.plateau = plateau;
    }

    public List<Joueur> getJoueurs() {
        if(joueurs == null){
            joueurs = new ArrayList<Joueur>();
        }
        return joueurs;
    }

    public void setJoueurs(List<Joueur> joueurs) {
        this.joueurs = joueurs;
    }

    public Plateau getPlateau() {
        return plateau;
    }

    public void setPlateau(Plateau plateau) {
        this.plateau = plateau;
        this.plateau.setJeu(this);
    }
    
    public void ajouteJoueur(Joueur j) throws PowerGameException{
        if(!getJoueurs().contains(j)){
            getJoueurs().add(j);
            
        }else{
            throw new PowerGameException("Le joueur " + j + " est déjà enregistré ");
        }
    }
    
    public Joueur getJoueur(String nom){
        for(Joueur j : getJoueurs()){
            if(j.getNom().equals(nom)){
                return j;
            }
        }
        return null;
    }

    public TourJeu nouveauTour() throws PowerGameException {
        
        tour = new TourJeu(this);
        
        return tour;
    }
     
    public Joueur getJoueurCourant(){
        if(tour != null){
            return tour.getJoueurCourant();
        }else{
            return null;
        }
    }
}
